package cn.yunyichina.provider.hisiface.service.impl;

import java.util.List;

import cn.yunyichina.provider.iface.entity.hisiface.bed.*;
import org.springframework.stereotype.Service;

import cn.yunyichina.provider.hisiface.service.AbstractService;
import cn.yunyichina.provider.iface.entity.common.ResCommon;

/**
 * 住院部分服务接口
 * 
 * @author zhou
 *
 */
@Service
public class HisifaceBedServiceImpl extends AbstractService {

	/**
	 * 住院记录查询
	 * 
	 * @param bedRecordsVo
	 * @return
	 */
	public ResCommon<List<BedRecordsVoResponse>> getBedRecords(BedRecordsVo bedRecordsVo) {
		String methodCode = "getBedRecords";
    	String methodName = "住院记录查询";
    	
    	return doExecList(methodCode, methodName, bedRecordsVo, BedRecordsVoResponse.class);
	}
	
	/**
	 * 住院费用查询
	 * 
	 * @param bedFeeVo
	 * @return
	 */
	public ResCommon<BedFeeVoResponse> getBedFee(BedFeeVo bedFeeVo) {
		String methodCode = "getBedFee";
		String methodName = "住院费用查询";
		
		return doExec(methodCode, methodName, bedFeeVo, BedFeeVoResponse.class);
	}

	/**
	 * 出院结算费用查询
	 *
	 * @param bedFeeVo
	 * @return
	 */
	public ResCommon<BedSettlementFeeVoResponse> getOutSettlementFee(BedSettlementFeeVo bedFeeVo) {
		String methodCode = "getOutSettlementFee";
		String methodName = "出院结算费用查询";

		return doExec(methodCode, methodName, bedFeeVo, BedSettlementFeeVoResponse.class);
	}
	
	/**
	 * 住院押金补缴支付
	 * 
	 * @param payDepositVo
	 * @return
	 */
	public ResCommon<PayDepositVoResponse> payDeposit(PayDepositVo payDepositVo) {
		String methodCode = "payDeposit";
		String methodName = "住院押金补缴支付";
		
		return doExec(methodCode, methodName, payDepositVo, PayDepositVoResponse.class);
	}

	/**
	 * 出院结算
	 *
	 * @param payDepositVo
	 * @return
	 */
	public ResCommon<PayOutSettlementVoResponse> payOutSettlement(PayOutSettlementVo payDepositVo) {
		String methodCode = "payOutSettlement";
		String methodName = "出院结算支付";

		return doExec(methodCode, methodName, payDepositVo, PayOutSettlementVoResponse.class);
	}
	
	/**
	 * 住院押金补缴记录查询
	 * 
	 * @param depositRecordsVo
	 * @return
	 */
	public ResCommon<List<DepositRecordsVoResponse>> getDepositRecords(DepositRecordsVo depositRecordsVo) {
		String methodCode = "getDepositRecords";
		String methodName = "住院押金补缴记录查询";
		
		return doExecList(methodCode, methodName, depositRecordsVo, DepositRecordsVoResponse.class);
	}

	/**
	 * 出院结算记录查询
	 *
	 * @param depositRecordsVo
	 * @return
	 */
	public ResCommon<List<DepositSettlementRecordsVoResponse>> getOutSettlementPayList(DepositSettlementRecordsVo depositRecordsVo) {
		String methodCode = "getOutSettlementPayList ";
		String methodName = "出院结算记录查询";

		return doExecList(methodCode, methodName, depositRecordsVo, DepositSettlementRecordsVoResponse.class);
	}
	
	/**
	 * 日清单基本信息
	 * 
	 * @param dailyBedFeeVo
	 * @return
	 */
	public ResCommon<DailyBedFeeVoResponse> getDailyBedFee(DailyBedFeeVo dailyBedFeeVo) {
		String methodCode = "getDailyBedFee";
		String methodName = "日清单基本信息查询";
		
		return doExec(methodCode, methodName, dailyBedFeeVo, DailyBedFeeVoResponse.class);
	}
	
	/**
	 * 日清单明细列表
	 * 
	 * @param dailyBedFeeDetailVo
	 * @return
	 */
	public ResCommon<List<DailyBedFeeDetailVoResponse>> getDailyBedFeeDetail(DailyBedFeeDetailVo dailyBedFeeDetailVo) {
		String methodCode = "getDailyBedFeeDetail";
		String methodName = "日清单明细列表查询";
		
		return doExecList(methodCode, methodName, dailyBedFeeDetailVo, DailyBedFeeDetailVoResponse.class);
	}
	
	/**
	 * 出院带药查询
	 * 
	 * @param outMedicineVo
	 * @return
	 */
	public ResCommon<OutMedicineVoResponse> getOutMedicine(OutMedicineVo outMedicineVo) {
		String methodCode = "getOutMedicine";
		String methodName = "出院带药查询";
		
		return doExec(methodCode, methodName, outMedicineVo, OutMedicineVoResponse.class);
	}
	
	/**
	 * 出院小结查询
	 * 
	 * @param outSummaryVo
	 * @return
	 */
	public ResCommon<OutSummaryVoResponse> getOutSummary(OutSummaryVo outSummaryVo) {
		String methodCode = "getOutSummary";
		String methodName = "出院小结查询";
		
		return doExec(methodCode, methodName, outSummaryVo, OutSummaryVoResponse.class);
	}
	
	/**
	 * 住院医嘱查询
	 * 
	 * @param bedAdviceVo
	 * @return
	 */
	public ResCommon<BedAdviceVoResponse> getBedAdvice(BedAdviceVo bedAdviceVo) {
		String methodCode = "getBedAdvice";
		String methodName = "住院医嘱查询";
		
		return doExec(methodCode, methodName, bedAdviceVo, BedAdviceVoResponse.class);
	}
}
